<?php
/*
* 域名品相分析
*/
class Domain{

    /*
    * 定义拼音组合
    * */
    protected  $pinyinArr = [
    "a","ai","an","ang","ao","ba","bai","ban","bang","bao","be","bei","ben","beng","bi","bian","biao","bie","bin","bing",
    "bo","bu","ca","cai","can","cang","cao","ce","cen","ceng","cha","chai","chan","chang","chao","che","chen","cheng",
    "chi","chong","chou","chu","chua","chuai","chuan","chuang","chui","chun","chuo","ci","cong","cou","cu","cuan","cui","cun","cuo",
    "da","dai","dan","dang","dao","de","dei","dem","den","deng","deo","di","dia","dian","diao","die","dim","ding","diu","dong",
    "dou","du","duan","dug","dui","dun","duo","e","ei","en","eng","er","fa","fan","fang","fei","fen","feng","fiao","fo","fou","fu","fui",
    "ga","gai","gan","gang","gao","ge","gei","gen","geng","go","gong","gongli","gou","gu","gua","guai","guan","guang","gui","gun","guo",
    "ha","hai","hal","han","hang","hao","he","hei","hen","heng","ho","hong","hou","hu","hua","huai","huan","huang","hui","hun","huo",
    "ji","jia","jian","jiang","jiao","jie","jin","jing","jiong","jiu","jou","ju","juan","jue","jun",
    "ka","kai","kan","kang","kao","ke","ken","keng","ki","kong","kou","ku","kua","kuai","kuan","kuang","kui","kun","kuo",
    "la","lai","lan","lang","lao","le","lei","leng","li","lia","lian","liang","liao","lie","lin","ling","liu","lo","long",
    "lou","lu","luan","lue","lun","luo","lv","m","ma","mai","man","mang","mao","me","mei","men","meng","meo","mi","mian","miao","mie",
    "min","ming","miu","mo","mol","mou","mu","na","nai","nan","nang","nao","ne","nei","nem","nen","neng","ni","nian","niang","niao","nie",
    "nin","ning","niu","nong","nou","nu","nuan","nue","nun","nung","nuo","nv","o","ou","pa","pai","pan","pang","pao","pei","pen","peng","pi",
    "pian","piao","pie","pin","ping","po","pou","pu","qi","qia","qian","qiang","qiao","qie","qin","qing","qiong","qiu","qu","quan","que","qun",
    "ra","ran","rang","rao","re","ren","reng","ri","rong","rou","ru","ruan","rui","run","ruo","sa","sai","san","sang","sao","se","sei",
    "sen","seng","seo","sha","shai","shan","shang","shao","she","shen","sheng","shi","shou","shu","shua","shuai","shuan","shuang","shui",
    "shun","shuo","si","so","song","sou","su","suan","sui","sun","suo","ta","tai","tan","tang","tao","te","teng","ti","tian","tiao","tie",
    "ting","tong","tou","tu","tuan","tui","tun","tuo","wa","wai","wan","wang","wei","wen","weng","wo","wu","xi","xia","xian","xiang","xiao",
    "xie","xin","xing","xiong","xiu","xu","xuan","xue","xun","ya","yan","yang","yao","ye","yen","yi","yin","ying","yo","yong","you","yu",
    "yuan","yue","yun","za","zai","zan","zang","zao","ze","zei","zen","zeng","zha","zhai","zhan","zhang","zhao","zhe","zhen","zheng","zhi",
    "zhong","zhou","zhu","zhua","zhuai","zhuan","zhuang","zhui","zhun","zhuo","zi","zo","zong","zou","zu","zuan","zui","zun","zuo"
    ];


    /*
    * a-z组成不同的拼音  翘舌+前后鼻音最高6位
    * $domain string 待检测域名
    * $count  int    计数器
    * return  int
    */
    public function checkPinYinType($domain,$count=0){
        $pinyinArr = $this->pinyinArr;
        $pin = [];
        foreach ($pinyinArr as $key => &$value) {
            $pin[$value] = strlen($value);
        }
        while($domain !='' && $domain){
            $match='';
            foreach($pinyinArr as $val){
                if($domain==$val){
                    $match=$val;break;
                }elseif(strpos($domain,$val) ===0){
                    $newStr = substr($domain,strlen($val));
                    if ( isset($pin[$newStr]) &&  isset($pin[$val]) && in_array(strlen($val), ['4','5','6'])) {
                        return 2;
                    }
                    $match=$val;
                }
            }
            if($match==''){
                return false;
            }
            
            $domain = preg_replace('/^'.$match.'/','',$domain);
            $count++;
        }
        return $count;
    }

    /*
    * 域名品相分析 分析域名是否 数字 字母 拼音 几拼 杂米
    * $Domain string 待检测域名类型
    * return  array
    */
    public function checkDomainType($Domain)
    {
        if (empty($Domain)) return ['code'=>0,'data'=>[],'msg'=>'待检测域名不能为空'];
    
        if (!is_string($Domain)) return ['code'=>0,'data'=>[],'msg'=>'数据类型有误'];
    
        $domain = explode('.', $Domain)[0];
        
        if (is_numeric($domain)) 
        {
            return ['code'=>1,'data'=>['type'=>1],'msg'=>'纯数字'];
        }
        $length = strlen($domain);
        if (preg_match('/^[A-Za-z]+$/',$domain)) 
        {   
            // 汉子拼音组合 最高6位
            $num = $this->checkPinYinType($domain);
            if ($num) {
                $msg = $num==1 ? "单拼":'双拼';
                return ['code'=>1,'data'=>['type'=>2],'msg'=>$msg];
            }
            // 监测字符串是否包含韵母(bpm太多了 少写点) 
            if(preg_match('/[aoeiuv]/',$domain)){
                return ['code'=>1,'data'=>['type'=>3],'msg'=>$length.'位纯声母'];
            }else{
                return ['code'=>1,'data'=>['type'=>4],'msg'=>$length.'位字母'];
            }
    
        }
    
        if (preg_match('/^[A-Za-z0-9]+$/',$domain)) 
        {
            return ['code'=>1,'data'=>['type'=>5],'msg'=>'杂米'];
        }
    
        return ['code'=>0,'data'=>[],'msg'=>'一个也没有'];
    }
}
$obj = new Domain();
var_dump($obj->checkDomainType('jmkjabc.com'));
?>